/**	
 * タイトル：	分页条件信息
 * 説明：    	
 *			
 * 会社名：	紹興日創軟件有限公司
 * 変更履歴：	2014/08/14 NIS 何
 *			新規作成
 *
 */
package com.nissoft.framework.database.pagination;

/**
 * @author NIS 何
 * @version 1.0
 */
public class PagingSearch<T> {

	/**
	 * 每页条数
	 */
	private int pageSize;

	/**
	 * 页码
	 */
	private int pageNum;

	/**
	 * 分页条件
	 */
	private T search;

	public PagingSearch() {
	}

	public PagingSearch(int pageSize, int pageNum, T search) {
		setPageSize(pageSize);
		setPageNum(pageNum);
		this.search = search;
	}

	/**
	 * 每页条数
	 */
	public int getPageSize() {
		return pageSize;
	}

	public void setPageSize(int pageSize) {
		this.pageSize = pageSize < 1 ? 1 : pageSize;
	}

	/**
	 * 页码
	 */
	public int getPageNum() {
		return pageNum;
	}

	public void setPageNum(int pageNum) {
		this.pageNum = pageNum < 1 ? 1 : pageNum;
	}

	/**
	 * 分页条件
	 */
	public T getSearch() {
		return search;
	}

	public void setSearch(T search) {
		this.search = search;
	}

	public int startCursor() {
		return (pageNum - 1) * pageSize;
	}

	/**
	 * 获取Mysql的分页语句
	 * 
	 * @param originSql
	 *            原始的sql文
	 */
	public String getMysqlPaging(String originSql) {
		return originSql + " limit " + startCursor() + "," + getPageSize();
	}

	/**
	 * 获取Postgresql的分页语句
	 * 
	 * @param originSql
	 *            原始的sql文
	 */
	public String getPostgresqlPaging(String originSql) {
		return originSql + " limit " + getPageSize() + " offset "
				+ startCursor();
	}
}
